package com.fowo.api.model.receipt;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fowo.api.common.validator.*;
import io.swagger.v3.oas.annotations.media.Schema;
import javax.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;

/**
 * 收货单 预览导入辅助模型(全字段为文本类型)
 * @author yl_ls
 */
@Getter
@Setter
public class ReceiptImportPo {

  /** 收货单号 */
  @ExcelProperty("*收货单号")
  @NotBlank(message = "收货单号不能为空")
  private String orderSn;

  /** 收货类型 */
  @ExcelProperty("收货类型")
  @EnumsString(
    value = { " 采购订单", " 委外订单" },
    message = "收货类型只能是“ 采购订单”, “ 委外订单”中的一个"
  )
  private String receiptType;

  /** 关联单据号 */
  @ExcelProperty("*关联单据号")
  @NotBlank(message = "关联单据号不能为空")
  private String docRelatePurchaseOrderCode;

  @ExcelIgnore
  @Schema(title = "*关联单据号")
  private String docRelate;

  /** 仓库 */
  @ExcelProperty("*仓库")
  @NotBlank(message = "仓库不能为空")
  @Size(max = 50, message = "仓库长度不能超过50")
  private String warehouseName;

  @ExcelIgnore
  @Schema(title = "*仓库")
  private String warehouse;

  /** 供应商 */
  @ExcelProperty("供应商")
  @Size(max = 50, message = "供应商长度不能超过50")
  private String supplierSupplierName;

  @ExcelIgnore
  @Schema(title = "供应商")
  private String supplier;

  /** 预计到货时间 */
  @ExcelProperty("预计到货时间")
  @DateTimeString(message = "预计到货时间不是有效的时间日期格式")
  private String arrivalGoodDate;

  /** 物流商 */
  @ExcelProperty("物流商")
  @Size(max = 50, message = "物流商长度不能超过50")
  private String shipmentEnterpriseName;

  @ExcelIgnore
  @Schema(title = "物流商")
  private String shipmentEnterprise;

  /** 物流单号 */
  @ExcelProperty("物流单号")
  @Size(max = 50, message = "物流单号长度不能超过50")
  private String logisticsCode;

  /** 采购员 */
  @ExcelProperty("采购员")
  @Size(max = 50, message = "采购员长度不能超过50")
  private String buyerName;

  @ExcelIgnore
  @Schema(title = "采购员")
  private String buyer;

  /** 自定义创建人 */
  @ExcelProperty("自定义创建人")
  @Size(max = 50, message = "自定义创建人长度不能超过50")
  private String creatorName;

  @ExcelIgnore
  @Schema(title = "自定义创建人")
  private String creator;

  /** 收货人 */
  @ExcelProperty("收货人")
  @Size(max = 50, message = "收货人长度不能超过50")
  private String consigneeName;

  @ExcelIgnore
  @Schema(title = "收货人")
  private String consignee;

  /** 收货时间 */
  @ExcelProperty("收货时间")
  @DateTimeString(message = "收货时间不是有效的时间日期格式")
  private String receiptDate;

  /** 备注 */
  @ExcelProperty("备注")
  @Size(max = 50, message = "备注长度不能超过50")
  private String remarks;

  /** 收货仓库 */
  @ExcelProperty("收货仓库")
  @Size(max = 50, message = "收货仓库长度不能超过50")
  private String clerkName;

  @ExcelIgnore
  @Schema(title = "收货仓库")
  private String clerk;

  /** 单据状态 */
  @ExcelProperty("单据状态")
  @EnumsString(
    value = { "待收货", "已完成" },
    message = "单据状态只能是“待收货”, “已完成”中的一个"
  )
  private String status;

  /** 来源单据 */
  @ExcelProperty("来源单据")
  @Size(max = 50, message = "来源单据长度不能超过50")
  private String businessOrderSn;

  /** 费用分配方式 */
  @ExcelProperty("费用分配方式")
  @EnumsString(
    value = { "不分摊", "按金额", "按数量" },
    message = "费用分配方式只能是“不分摊”, “按金额”, “按数量”中的一个"
  )
  private String costDistribution;

  /** 运费 */
  @ExcelProperty("运费")
  @DecimalString(message = "运费小数格式不正确", label = "运费")
  private String freight;

  /** 其他费用 */
  @ExcelProperty("其他费用")
  @DecimalString(message = "其他费用小数格式不正确", label = "其他费用")
  private String otherExpenses;

  /** 总入库量 */
  @ExcelProperty("总入库量")
  @IntegerString(message = "总入库量数值格式不正确", label = "总入库量")
  private String allTotalStorage;

  /** 源表检测字段 */
  @ExcelProperty("源表检测字段")
  @Size(max = 10, message = "源表检测字段长度不能超过10")
  private String detectionFlag;

  /** 加急 */
  @ExcelProperty("加急")
  private String urgent;

  /** 通知收货量 */
  @ExcelProperty("通知收货量")
  @IntegerString(
    message = "通知收货量数值格式不正确",
    label = "通知收货量",
    min = 0
  )
  private String notificationOfReceiptQuantity;

  /** 收货量 */
  @ExcelProperty("收货量")
  @IntegerString(message = "收货量数值格式不正确", label = "收货量", min = 0)
  private String receiptAboutQuantity;
}
